package com.java;

/**
 * 代码块
 */
public class CodeBlocks {
    // 静态代码块：静态代码块在类创建后执行唯一一次，其生命周期随类
    static {
        System.out.println("静态代码块");
    }
    
    // 构造代码块：构造代码块在每次创建对象new时执行构造函数前执行，可将多个构造函数中相同的部分抽取到构造代码块中
    {
        System.out.println("构造代码块");
    }
    
    public CodeBlocks() {
        System.out.println("构造函数");
    }
    
    public void func() {
        // 局部代码块：局部代码块在每次方法调用时执行，可用于提前结束变量生命周期，利于及时释放内存提高内存利用率
        {
            System.out.println("局部代码块");
        }
    }
    
    public static void main(String[] args) {
        // 静态代码块
        
        CodeBlocks ins = new CodeBlocks();
        // 构造代码块
        // 构造函数
        
        ins.func();
        // 局部代码块
    }
}
